.radio-group {
    display: flex;
    flex-direction: column;
}

.radio-group.-inline {
    flex-direction: row;
}

.radio {
    position: relative;
    display: flex;
    align-items: center;
    white-space: nowrap;
    outline: 0;
}

.radio:last-of-type {
    margin-right: 0;
}

.radio .radio-label {
    cursor: pointer;
    margin-bottom: 0;
    display: inline-flex;
    align-items: center;
    position: relative;
}

.radio .radio-label::before, .radio .radio-label::after {
    position: absolute;
    top: 50%;
    left: 0;
    display: inline-flex;
    cursor: pointer;
    width: var(--radio--width);
    height: var(--radio--height);
}

.radio .radio-label::before {
    content: "";
    user-select: none;
    transform: translate(0, -50%);
}

.radio .radio-label::after {
    content: "";
    z-index: 1;
    text-align: center;
    transform: scale(0) translate(0, -50%);
    border: 1px solid transparent;
    transform-origin: center top;
    mask-image: url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>check</title><circle cx="14" cy="14" r="12"></circle></svg>');
    mask-size: var(--radio--circle--width) var(--radio--circle--height);
    mask-position: center center;
    mask-repeat: no-repeat;
}

.radio input {
    top: 0;
    left: 0;
    position: absolute;
    z-index: 0;
    opacity: 0;
    height: 0;
    width: 0;
}

.radio .radio-label, .radio input, .radio input:focus, .radio input:active {
    outline: 0;
}

.radio input:checked ~ .radio-label::after {
    content: "";
    mask-position: center center;
    mask-repeat: no-repeat;
    transform: scale(1) translate(0, -50%);
}

.radio input:disabled ~ .radio-label, .radio input[readonly] ~ .radio-label {
    cursor: default;
}

.radio input:disabled ~ .radio-label::after, .radio input[readonly] ~ .radio-label::after, .radio input:checked:disabled ~ .radio-label::after, .radio input:checked[readonly] ~ .radio-label::after {
    cursor: not-allowed;
}

.radio {
    margin: var(--radio--margin, var(--radio--margin-top) var(--radio--margin-right) var(--radio--margin-bottom) var(--radio--margin-left));
}

.radio .radio-label {
    color: var(--radio--color);
    font-size: var(--radio--font-size);
    transition-property: var(--radio--transition-property);
    transition-duration: var(--radio--transition-duration);
    transition-timing-function: var(--radio--transition-timing-function);
    padding-left: calc(var(--radio--width) + var(--radio--margin-right));
}

.radio .radio-label::before {
    background: var(--radio--background);
    border-color: var(--radio--border-color, var(--radio--border-top-color) var(--radio--border-right-color) var(--radio--border-bottom-color) var(--radio--border-left-color));
    border-width: var(--radio--border-width, var(--radio--border-top-width) var(--radio--border-right-width) var(--radio--border-bottom-width) var(--radio--border-left-width));
    border-style: var(--radio--border-style, var(--radio--border-top-style) var(--radio--border-right-style) var(--radio--border-bottom-style) var(--radio--border-left-style));
    border-radius: var(--radio--border-radius, var(--radio--border-top-left-radius) var(--radio--border-top-right-radius) var(--radio--border-bottom-right-radius) var(--radio--border-bottom-left-radius));
    box-shadow: var(--radio--box-shadow, var(--radio--box-shadow-offset-x) var(--radio--box-shadow-offset-y) var(--radio--box-shadow-blur-radius) var(--radio--box-shadow-spread-radius) var(--radio--box-shadow-color));
    transition-property: var(--radio--transition-property);
    transition-duration: var(--radio--transition-duration);
    transition-timing-function: var(--radio--transition-timing-function);
}

.radio .radio-label::after {
    background: var(--radio--circle--color);
    transition-property: var(--radio--transition-property);
    transition-duration: var(--radio--transition-duration);
    transition-timing-function: var(--radio--transition-timing-function);
}

.radio:not(.-disabled) .radio-label:focus::before {
    box-shadow: var(--radio--focus--box-shadow, var(--radio--focus--box-shadow-offset-x) var(--radio--focus--box-shadow-offset-y) var(--radio--focus--box-shadow-blur-radius) var(--radio--focus--box-shadow-spread-radius) var(--radio--focus--box-shadow-color));
}

.radio input:checked ~ .radio-label::before {
    background: var(--radio--checked--background);
    border-color: var(--radio--checked--border-color, var(--radio--checked--border-top-color) var(--radio--checked--border-right-color) var(--radio--checked--border-bottom-color) var(--radio--checked--border-left-color));
}

.radio input:disabled ~ .radio-label {
    color: var(--radio--disabled--color);
    cursor: default;
}

.radio input:disabled ~ .radio-label::before {
    background: var(--radio--disabled--background);
    cursor: not-allowed;
}

.radio input[readonly] ~ .radio-label::before {
    background: var(--radio--readonly--background);
    cursor: not-allowed;
}

.radio input:checked:disabled ~ .radio-label::before {
    background: var(--radio--checked--disabled--background);
    border-color: var(--radio--checked--disabled--border-color, var(--radio--checked--disabled--border-top-color) var(--radio--checked--disabled--border-right-color) var(--radio--checked--disabled--border-bottom-color) var(--radio--checked--disabled--border-left-color));
}

.radio input[readonly]:checked ~ .radio-label::before {
    background: var(--radio--checked--readonly--background);
    border-color: var(--radio--checked--readonly--border-color, var(--radio--checked--readonly--border-top-color) var(--radio--checked--readonly--border-right-color) var(--radio--checked--readonly--border-bottom-color) var(--radio--checked--readonly--border-left-color));
}

.radio.-sm {
    --radio--font-size: var(--radio--sm--font-size);
    --radio--width: var(--radio--sm--width);
    --radio--height: var(--radio--sm--height);
    --radio--circle--width: var(--radio--sm--circle--width);
    --radio--circle--height: var(--radio--sm--circle--height);
    --radio--margin-right: var(--radio--sm--margin-right);
    --radio--margin-bottom: var(--radio--sm--margin-bottom);
}

.radio.-md {
    --radio--font-size: var(--radio--md--font-size);
    --radio--width: var(--radio--md--width);
    --radio--height: var(--radio--md--height);
    --radio--circle--width: var(--radio--md--circle--width);
    --radio--circle--height: var(--radio--md--circle--height);
    --radio--margin-right: var(--radio--md--margin-right);
    --radio--margin-bottom: var(--radio--md--margin-bottom);
}

.radio.-lg {
    --radio--font-size: var(--radio--lg--font-size);
    --radio--width: var(--radio--lg--width);
    --radio--height: var(--radio--lg--height);
    --radio--circle--width: var(--radio--lg--circle--width);
    --radio--circle--height: var(--radio--lg--circle--height);
    --radio--margin-right: var(--radio--lg--margin-right);
    --radio--margin-bottom: var(--radio--lg--margin-bottom);
}

.radio.-light {
    --radio--color: var(--radio--light--color);
    --radio--background: var(--radio--light--background);
    --radio--border-top-color: var(--radio--light--border-top-color);
    --radio--border-right-color: var(--radio--light--border-right-color);
    --radio--border-bottom-color: var(--radio--light--border-bottom-color);
    --radio--border-left-color: var(--radio--light--border-left-color);
    --radio--disabled--background: var(--radio--light--disabled--background);
    --radio--disabled--border-top-color: var(--radio--light--disabled--border-top-color);
    --radio--disabled--border-right-color: var(--radio--light--disabled--border-right-color);
    --radio--disabled--border-bottom-color: var(--radio--light--disabled--border-bottom-color);
    --radio--disabled--border-left-color: var(--radio--light--disabled--border-left-color);
    --radio--readonly--background: var(--radio--light--readonly--background);
    --radio--readonly--border-top-color: var(--radio--light--readonly--border-top-color);
    --radio--readonly--border-right-color: var(--radio--light--readonly--border-right-color);
    --radio--readonly--border-bottom-color: var(--radio--light--readonly--border-bottom-color);
    --radio--readonly--border-left-color: var(--radio--light--readonly--border-left-color);
    --radio--checked--disabled--background: var(--radio--light--checked--disabled--background);
    --radio--checked--disabled--border-top-color: var(--radio--light--checked--disabled--border-top-color);
    --radio--checked--disabled--border-right-color: var(--radio--light--checked--disabled--border-right-color);
    --radio--checked--disabled--border-bottom-color: var(--radio--light--checked--disabled--border-bottom-color);
    --radio--checked--disabled--border-left-color: var(--radio--light--checked--disabled--border-left-color);
    --radio--checked--readonly--background: var(--radio--light--checked--readonly--background);
    --radio--checked--readonly--border-top-color: var(--radio--light--checked--readonly--border-top-color);
    --radio--checked--readonly--border-right-color: var(--radio--light--checked--readonly--border-right-color);
    --radio--checked--readonly--border-bottom-color: var(--radio--light--checked--readonly--border-bottom-color);
    --radio--checked--readonly--border-left-color: var(--radio--light--checked--readonly--border-left-color);
}

.radio.-dark {
    --radio--color: var(--radio--dark--color);
    --radio--background: var(--radio--dark--background);
    --radio--border-top-color: var(--radio--dark--border-top-color);
    --radio--border-right-color: var(--radio--dark--border-right-color);
    --radio--border-bottom-color: var(--radio--dark--border-bottom-color);
    --radio--border-left-color: var(--radio--dark--border-left-color);
    --radio--disabled--background: var(--radio--dark--disabled--background);
    --radio--disabled--border-top-color: var(--radio--dark--disabled--border-top-color);
    --radio--disabled--border-right-color: var(--radio--dark--disabled--border-right-color);
    --radio--disabled--border-bottom-color: var(--radio--dark--disabled--border-bottom-color);
    --radio--disabled--border-left-color: var(--radio--dark--disabled--border-left-color);
    --radio--readonly--background: var(--radio--dark--readonly--background);
    --radio--readonly--border-top-color: var(--radio--dark--readonly--border-top-color);
    --radio--readonly--border-right-color: var(--radio--dark--readonly--border-right-color);
    --radio--readonly--border-bottom-color: var(--radio--dark--readonly--border-bottom-color);
    --radio--readonly--border-left-color: var(--radio--dark--readonly--border-left-color);
    --radio--checked--disabled--background: var(--radio--dark--checked--disabled--background);
    --radio--checked--disabled--border-top-color: var(--radio--dark--checked--disabled--border-top-color);
    --radio--checked--disabled--border-right-color: var(--radio--dark--checked--disabled--border-right-color);
    --radio--checked--disabled--border-bottom-color: var(--radio--dark--checked--disabled--border-bottom-color);
    --radio--checked--disabled--border-left-color: var(--radio--dark--checked--disabled--border-left-color);
    --radio--checked--readonly--background: var(--radio--dark--checked--readonly--background);
    --radio--checked--readonly--border-top-color: var(--radio--dark--checked--readonly--border-top-color);
    --radio--checked--readonly--border-right-color: var(--radio--dark--checked--readonly--border-right-color);
    --radio--checked--readonly--border-bottom-color: var(--radio--dark--checked--readonly--border-bottom-color);
    --radio--checked--readonly--border-left-color: var(--radio--dark--checked--readonly--border-left-color);
}

.radio.-native input {
    top: auto;
    left: auto;
    position: relative;
    opacity: 1;
    height: auto;
    width: auto;
}

.radio.-native .radio-label {
    padding-left: var(--radio--margin-right);
}

.radio.-native .radio-label::before, .radio.-native .radio-label::after {
    display: none;
}
